<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  
  <title>Category: PHP | 程序小工  | Just do it!</title>
  <meta name="description" content="遇见更好的自己~" />
  <meta name="keywords" content="" />
  <meta name="HandheldFriendly" content="True" />
  <meta name="apple-mobile-web-app-capable" content="yes">
  <link rel="shortcut icon" href="/">
  <link rel="alternate" href="/atom.xml" title="程序小工  | Just do it!">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="description" content="遇见更好的自己~">
<meta property="og:type" content="website">
<meta property="og:title" content="程序小工  | Just do it!">
<meta property="og:url" content="http://blog.i2arch.tech/categories/PHP/index.html">
<meta property="og:site_name" content="程序小工  | Just do it!">
<meta property="og:description" content="遇见更好的自己~">
<meta property="og:locale" content="zh-Hans">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="程序小工  | Just do it!">
<meta name="twitter:description" content="遇见更好的自己~">
    
  <link href="https://fonts.googleapis.com/css?family=Inconsolata|Titillium+Web" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
  <link href='//cdn.bootcss.com/node-waves/0.7.5/waves.min.css' rel='stylesheet'>
  <link rel="stylesheet" href="/style.css">
  <script>
    function setLoadingBarProgress(num) {
      document.getElementById('loading-bar').style.width=num+"%";
    }
  </script>
</head>

<body>
  <div id="loading-bar-wrapper">
  <div id="loading-bar"></div>
</div>


  <script>setLoadingBarProgress(20)</script>
  <header class="l_header">
	<div class='wrapper'>
		<div class="nav-main container container--flex">
			<a class="logo flat-box" href='/' >
				程序小工  | Just do it!
			</a>
			<div class='menu'>
				<ul class='h-list'>
					
						<li>
							<a class='flat-box nav-home' href='/'>
								<i class='icon icon-list2'></i>
								首页
							</a>
						</li>
					
						<li>
							<a class='flat-box nav-archives' href='/archives'>
								<i class='icon icon-bookmark'></i>
								归档
							</a>
						</li>
					
						<li>
							<a class='flat-box nav-about' href='/about'>
								<i class='icon icon-user'></i>
								关于
							</a>
						</li>
					
				</ul>
				<div class='underline'></div>
			</div>
			
				<div class="m_search">
					<form name="searchform" class="form u-search-form">
						<input type="text" class="input u-search-input" placeholder="Search" />
						<span class="icon icon-search"></span>
					</form>
				</div>
			
			<ul class='switcher h-list'>
				
					<li class='s-search'><a href='javascript:void(0)'><span class="icon icon-search flat-box"></span></a></li>
				
				<li class='s-menu'><a href='javascript:void(0)'><span class="icon icon-menu flat-box"></span></a></li>
			</ul>
		</div>

		<div class='nav-sub container container--flex'>
			<a class="logo" class="flat-box" href='javascript:void(0)'>
				Word of Forks
			</a>

			<ul class='switcher h-list'>
				<li class='s-comment'><a href='javascript:void(0)'><span class="icon icon-chat_bubble_outline flat-box"></span></a></li>
				<li class='s-top'><a href='javascript:void(0)'><span class="icon icon-arrow_upward flat-box"></span></a></li>
				<li class='s-toc'><a href='javascript:void(0)'><span class="icon icon-format_list_numbered flat-box"></span></a></li>
			</ul>
		</div>
	</div>
</header>
<aside class="menu-phone">
	<nav>
		
			<a href="/" class="nav-home nav">
				首页
			</a>
		
			<a href="/archives" class="nav-archives nav">
				归档
			</a>
		
			<a href="/about" class="nav-about nav">
				关于
			</a>
		
	</nav>
</aside>

    <script>setLoadingBarProgress(40);</script>
  <div class="l_body">
    <div class='container clearfix'>
      <!-- 左侧内容 -->
      <div class='l_main'>
        
  <script>
    window.subData= { title:'Category : PHP'}
  </script>


  <section class="post-list">
    
      <div class='post-wrapper'>
        <article class="post reveal ">
  <section class="meta">
    
      <h2 class="title">
        <a href="/2018/08/07/tp5-controller3/">
          【ThinkPHP5深入理解】控制器（三）-- 前置操作
        </a>
      </h2>
      
        
    
    <div class='cats'>
        <i class="icon icon-bookmark"></i>
        <a href="/categories/PHP/">PHP</a>
    </div>

          <time class="time">
            8月<br>
              07
              <!-- Aug 7, 2018 -->
          </time>
  </section>
  <section class="article typo">
    <span class="zhaiyao">[摘要]</span>
    <p>[摘要]：</p>
<p>tp5 框架的前置操作可以用于对某些方法进行通用的预处理，比如登录状态的判断[session 处理]、用户权限的卡控[cache/session 的处理]，通过控制器的前置操作，将公用代码进行封装，简化了调用流程[直接设定前置关系即可实现前置方法的自动调用]。</p>

      
        <div class="readmore">
          <a href="/2018/08/07/tp5-controller3/">阅读全文 <i class="icon icon-next"></i></a>
        </div>
        
        
          <div class="full-width auto-padding tags">
            
              <a href="/tags/thinkphp5/">
                <span>
                  <i class="icon icon-price-tags"></i>
                </span>
                thinkphp5
              </a>
              
          </div>
          
  </section>
</article>

      </div>
    
      <div class='post-wrapper'>
        <article class="post reveal ">
  <section class="meta">
    
      <h2 class="title">
        <a href="/2018/07/11/php-practice-wx-tp5-3/">
          微信小程序结合ThinkPHP5实战项目（三）-- 微信登录与令牌
        </a>
      </h2>
      
        
    
    <div class='cats'>
        <i class="icon icon-bookmark"></i>
        <a href="/categories/PHP/">PHP</a>
    </div>

          <time class="time">
            7月<br>
              11
              <!-- Jul 11, 2018 -->
          </time>
  </section>
  <section class="article typo">
    <span class="zhaiyao">[摘要]</span>
    <p>ThinkPHP5 从入门到深入学习，结合实战项目深入理解 ThinkPHP5 的特性和使用方法。深入学习 api 开发，学习微信登录和令牌的相关知识，并理解微信登录流程，完成与微信开放 api 之间的数据交互，完善项目的相应功能。<br>
理解第三方登录授权的 code 和 token 交互过程。</p>

      
        <div class="readmore">
          <a href="/2018/07/11/php-practice-wx-tp5-3/">阅读全文 <i class="icon icon-next"></i></a>
        </div>
        
        
          <div class="full-width auto-padding tags">
            
              <a href="/tags/thinkphp5/">
                <span>
                  <i class="icon icon-price-tags"></i>
                </span>
                thinkphp5
              </a>
              
              <a href="/tags/微信小程序/">
                <span>
                  <i class="icon icon-price-tags"></i>
                </span>
                微信小程序
              </a>
              
          </div>
          
  </section>
</article>

      </div>
    
      <div class='post-wrapper'>
        <article class="post reveal ">
  <section class="meta">
    
      <h2 class="title">
        <a href="/2018/07/09/php-optimize/">
          PHP性能优化
        </a>
      </h2>
      
        
    
    <div class='cats'>
        <i class="icon icon-bookmark"></i>
        <a href="/categories/PHP/">PHP</a>
    </div>

          <time class="time">
            7月<br>
              09
              <!-- Jul 9, 2018 -->
          </time>
  </section>
  <section class="article typo">
    <span class="zhaiyao">[摘要]</span>
    <p>PHP 运行环境的性能考虑在 php 深入学习中需要逐步强化意识，并着手实现，其中对于性能分析的相关工具也需要有一定的掌握，比如压力测试工具 Apache Benchmark，Opcode 代码分析工具 vld，PHP 性能分析工具 XHProf，另外，对于日常编写代码时，也需要考虑 PHP 自身的特性，进行扬长避短，使用 isset 而不用 array_key_exists 方法，以及尽可能规避 PHP 自带的魔术方法。对 PHP 的运行流程也需要有一个大致的了解，知道 Opcode 在 PHP 执行过程中的阶段。需要逐渐加深对 PHP 深层次的思考。</p>

      
        <div class="readmore">
          <a href="/2018/07/09/php-optimize/">阅读全文 <i class="icon icon-next"></i></a>
        </div>
        
        
          <div class="full-width auto-padding tags">
            
              <a href="/tags/optimize/">
                <span>
                  <i class="icon icon-price-tags"></i>
                </span>
                optimize
              </a>
              
          </div>
          
  </section>
</article>

      </div>
    
      <div class='post-wrapper'>
        <article class="post reveal ">
  <section class="meta">
    
      <h2 class="title">
        <a href="/2018/07/05/php-practice-wx-tp5-2/">
          微信小程序结合ThinkPHP5实战项目（二）-- 接口编写
        </a>
      </h2>
      
        
    
    <div class='cats'>
        <i class="icon icon-bookmark"></i>
        <a href="/categories/PHP/">PHP</a>
    </div>

          <time class="time">
            7月<br>
              05
              <!-- Jul 5, 2018 -->
          </time>
  </section>
  <section class="article typo">
    <span class="zhaiyao">[摘要]</span>
    <p>ThinkPHP5 从入门到深入学习，结合实战项目深入理解 ThinkPHP5 的特性和使用方法。编写完成简单的基于 RESTFul 接口，实现相应功能，掌握控制器、模型、异常处理、数据校验的使用。</p>

      
        <div class="readmore">
          <a href="/2018/07/05/php-practice-wx-tp5-2/">阅读全文 <i class="icon icon-next"></i></a>
        </div>
        
        
          <div class="full-width auto-padding tags">
            
              <a href="/tags/thinkphp5/">
                <span>
                  <i class="icon icon-price-tags"></i>
                </span>
                thinkphp5
              </a>
              
              <a href="/tags/微信小程序/">
                <span>
                  <i class="icon icon-price-tags"></i>
                </span>
                微信小程序
              </a>
              
          </div>
          
  </section>
</article>

      </div>
    
      <div class='post-wrapper'>
        <article class="post reveal ">
  <section class="meta">
    
      <h2 class="title">
        <a href="/2018/07/05/http-ouath/">
          【PHP】第三方登录OAuth2.0
        </a>
      </h2>
      
        
    
    <div class='cats'>
        <i class="icon icon-bookmark"></i>
        <a href="/categories/PHP/">PHP</a>
    </div>

          <time class="time">
            7月<br>
              05
              <!-- Jul 5, 2018 -->
          </time>
  </section>
  <section class="article typo">
    <span class="zhaiyao">[摘要]</span>
    <p>对于网站应用程序，涉及到登录和第三方 api 接口时，都会接触到 Token 等概念，而这部分的逻辑原理则是来自于 OAuth 授权协议，<br>
目前的 OAuth2.0 协议的安全性也是被广泛认可，到目前为止尚且没有发生严重的安全事故。学习 OAuth2.0 协议的工作原理，并了解 qq 登录的流程和实现方式。</p>

      
        <div class="readmore">
          <a href="/2018/07/05/http-ouath/">阅读全文 <i class="icon icon-next"></i></a>
        </div>
        
        
          <div class="full-width auto-padding tags">
            
              <a href="/tags/oauth/">
                <span>
                  <i class="icon icon-price-tags"></i>
                </span>
                oauth
              </a>
              
          </div>
          
  </section>
</article>

      </div>
    
      <div class='post-wrapper'>
        <article class="post reveal ">
  <section class="meta">
    
      <h2 class="title">
        <a href="/2018/07/01/php-practice-wx-tp5-1/">
          微信小程序结合ThinkPHP5实战项目（一）-- 数据库访问与ORM
        </a>
      </h2>
      
        
    
    <div class='cats'>
        <i class="icon icon-bookmark"></i>
        <a href="/categories/PHP/">PHP</a>
    </div>

          <time class="time">
            7月<br>
              01
              <!-- Jul 1, 2018 -->
          </time>
  </section>
  <section class="article typo">
    <span class="zhaiyao">[摘要]</span>
    <p>ThinkPHP5 从入门到深入学习，结合实战项目深入理解 ThinkPHP5 的特性和使用方法，了解 ThinkPHP5 的数据库访问和 ORM 思想，学习使用查询构造器、日志以及初步了解异常处理机制。</p>

      
        <div class="readmore">
          <a href="/2018/07/01/php-practice-wx-tp5-1/">阅读全文 <i class="icon icon-next"></i></a>
        </div>
        
        
          <div class="full-width auto-padding tags">
            
              <a href="/tags/thinkphp5/">
                <span>
                  <i class="icon icon-price-tags"></i>
                </span>
                thinkphp5
              </a>
              
              <a href="/tags/微信小程序/">
                <span>
                  <i class="icon icon-price-tags"></i>
                </span>
                微信小程序
              </a>
              
          </div>
          
  </section>
</article>

      </div>
    
      <div class='post-wrapper'>
        <article class="post reveal ">
  <section class="meta">
    
      <h2 class="title">
        <a href="/2018/05/16/php-无限级分类/">
          PHP实现无限级分类 -- path标识
        </a>
      </h2>
      
        
    
    <div class='cats'>
        <i class="icon icon-bookmark"></i>
        <a href="/categories/PHP/">PHP</a>
    </div>

          <time class="time">
            5月<br>
              16
              <!-- May 16, 2018 -->
          </time>
  </section>
  <section class="article typo">
    <span class="zhaiyao">[摘要]</span>
    <p>在实际项目中经常要用到无限级分类，如多级分类、导航表等。PHP 实现无限级分类通常有两种实现方式，一种是利用<code>path</code>字段（pid+id）标识当前层级；另一种是利用递归循环<code>pid</code>的方式。此处介绍前种方式。</p>

      
        <div class="readmore">
          <a href="/2018/05/16/php-无限级分类/">阅读全文 <i class="icon icon-next"></i></a>
        </div>
        
        
          <div class="full-width auto-padding tags">
            
              <a href="/tags/无限级分类/">
                <span>
                  <i class="icon icon-price-tags"></i>
                </span>
                无限级分类
              </a>
              
          </div>
          
  </section>
</article>

      </div>
    
      <div class='post-wrapper'>
        <article class="post reveal ">
  <section class="meta">
    
      <h2 class="title">
        <a href="/2018/05/14/sphinx-php-windows/">
          windows7使用Sphinx+PHP+MySQL详细介绍
        </a>
      </h2>
      
        
    
    <div class='cats'>
        <i class="icon icon-bookmark"></i>
        <a href="/categories/PHP/">PHP</a>
    </div>

          <time class="time">
            5月<br>
              14
              <!-- May 14, 2018 -->
          </time>
  </section>
  <section class="article typo">
    <span class="zhaiyao">[摘要]</span>
    <p>由于业务需要，需要做类似淘宝商城商品检索的功能，对于数据量很大的情况，MySQL 查询的效率损耗很大，需要使用专门的索引引擎进行搜索查询，实现功能，对于和 PHP 和 Mysql 的结合的索引引擎中， xunsearch 和 sphinx 是较为著名的，但由于 xunsearch 服务器端不支持 windows，所以暂且先考虑 sphinx 的使用。sphinx 目前已支持简体中文、繁体中文和英文的检索，不需要额外安装插件支持。</p>

      
        <div class="readmore">
          <a href="/2018/05/14/sphinx-php-windows/">阅读全文 <i class="icon icon-next"></i></a>
        </div>
        
        
          <div class="full-width auto-padding tags">
            
              <a href="/tags/thinkphp5/">
                <span>
                  <i class="icon icon-price-tags"></i>
                </span>
                thinkphp5
              </a>
              
              <a href="/tags/sphinx/">
                <span>
                  <i class="icon icon-price-tags"></i>
                </span>
                sphinx
              </a>
              
          </div>
          
  </section>
</article>

      </div>
    
      <div class='post-wrapper'>
        <article class="post reveal ">
  <section class="meta">
    
      <h2 class="title">
        <a href="/2018/05/07/php-route/">
          【转】PHP发展路径
        </a>
      </h2>
      
        
    
    <div class='cats'>
        <i class="icon icon-bookmark"></i>
        <a href="/categories/PHP/">PHP</a>
    </div>

          <time class="time">
            5月<br>
              07
              <!-- May 7, 2018 -->
          </time>
  </section>
  <section class="article typo">
    <span class="zhaiyao">[摘要]</span>
    <p>按照了解的很多 PHP/LNMP 程序员的发展轨迹，结合个人经验体会，抽象出很多程序员对未来的迷漫，特别对技术学习的盲目和慌乱，简单梳理了这个每个阶段 PHP 程序员的技术要求，来帮助很多 PHP 程序做对照设定学习成长目标。</p>

      
        <div class="readmore">
          <a href="/2018/05/07/php-route/">阅读全文 <i class="icon icon-next"></i></a>
        </div>
        
        
          <div class="full-width auto-padding tags">
            
              <a href="/tags/路径/">
                <span>
                  <i class="icon icon-price-tags"></i>
                </span>
                路径
              </a>
              
          </div>
          
  </section>
</article>

      </div>
    
      <div class='post-wrapper'>
        <article class="post reveal ">
  <section class="meta">
    
      <h2 class="title">
        <a href="/2018/04/16/php-email/">
          PHP扩展功能--发送邮件
        </a>
      </h2>
      
        
    
    <div class='cats'>
        <i class="icon icon-bookmark"></i>
        <a href="/categories/PHP/">PHP</a>
    </div>

          <time class="time">
            4月<br>
              16
              <!-- Apr 16, 2018 -->
          </time>
  </section>
  <section class="article typo">
    <span class="zhaiyao">[摘要]</span>
    <h3 id="1-下载-phpmailer-源码"><a class="markdownIt-Anchor" href="#1-下载-phpmailer-源码"></a> 1、下载 PHPMailer 源码</h3>
<p>[github 下载]<br>
（测试使用的是 5.2.2 版本）</p>
<h3 id="2-注册并登录网易邮箱"><a class="markdownIt-Anchor" href="#2-注册并登录网易邮箱"></a> 2、注册并登录网易邮箱</h3>
<p>（其他邮箱均可）【用于配置用户名和三方登录授权码，以及发送人邮箱地址】</p>
<p>（1）开启 POP3 协议 定位到开启页面</p>

      
        <div class="readmore">
          <a href="/2018/04/16/php-email/">阅读全文 <i class="icon icon-next"></i></a>
        </div>
        
        
          <div class="full-width auto-padding tags">
            
              <a href="/tags/email/">
                <span>
                  <i class="icon icon-price-tags"></i>
                </span>
                email
              </a>
              
          </div>
          
  </section>
</article>

      </div>
    
  </section>


  <nav id="page-nav">
    
    
    <a class="next" rel="next" href="/categories/PHP/page/2/">
      <span class="text">Next</span>
      <span class="icon icon-chevron-right"></span>
    </a>
    
  </nav>


      </div>

      <!-- 右侧边栏组件 -->
      <aside class='l_side'>
        
      </aside>

      <div class="gotop">
          
    <a href='javascript:void(0)'>
        <i class="icon icon-arrow_upward flat-box">
        </i>
    </a>

      </div>
      <script>setLoadingBarProgress(60);</script>
    </div>
  </div>
  <footer id="footer" class="clearfix">

	<div class="social-wrapper">
  	
      
        <a href="https://github.com/zqunor" class="social github"
          target="_blank" rel="external">
          <span class="icon icon-github"></span>
        </a>
      
        <a href="https://www.cnblogs.com/zqunor" class="social zhihu"
          target="_blank" rel="external">
          <span class="icon icon-zhihu"></span>
        </a>
      
        <a href="/atom.xml" class="social rss"
          target="_blank" rel="external">
          <span class="icon icon-rss"></span>
        </a>
      
    
  </div>
  <div>Theme <a href='https://github.com/stkevintan/hexo-theme-material-flow' class="codename">MaterialFlow</a>  Powered by<a href="https://blog.i2arch.tech/" target="_blank">程序小工</a>.</div>

</footer>

  <script>setLoadingBarProgress(80);</script>
  

    <script src="//apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script src='//cdn.bootcss.com/node-waves/0.7.5/waves.min.js'></script>
    <script src="//cdn.bootcss.com/scrollReveal.js/3.3.2/scrollreveal.min.js"></script>
    <script src="/js/jquery.fitvids.js"></script>
      <script>
        var GOOGLE_CUSTOM_SEARCH_API_KEY = "";
        var GOOGLE_CUSTOM_SEARCH_ENGINE_ID = "";
        var ALGOLIA_API_KEY = "";
        var ALGOLIA_APP_ID = "";
        var ALGOLIA_INDEX_NAME = "";
        var AZURE_SERVICE_NAME = "";
        var AZURE_INDEX_NAME = "";
        var AZURE_QUERY_KEY = "";
        var BAIDU_API_ID = "fca5b83cf69f752ddc96a61ef64a3659";
        var SEARCH_SERVICE = "hexo";
        var ROOT = "/" || "/";
        if (!ROOT.endsWith('/')) ROOT += '/';
      </script>
      <script src="/js/search.js"></script>
        <script src="/js/app.js"></script>
  <script>setLoadingBarProgress(100);</script>
</body>
</html>
